    // 颜色代码映射
    const colors = {
        black: 30,
        red: 31,
        green: 32,
        yellow: 33,
        blue: 34,
        magenta: 35,
        cyan: 36,
        white: 37,
    };

    // 背景颜色代码映射
    const backgroundColors = {
        black: 40,
        red: 41,
        green: 42,
        yellow: 43,
        blue: 44,
        magenta: 45,
        cyan: 46,
        white: 47,
    };

    // 样式代码映射
    const styles = {
        bright: 1,
        dim: 2,
        italic: 3,
        underline: 4,
        blink: 5,
        reverse: 7,
        hidden: 8,
    };

/**
 * 输出彩色字符串
 * @param {string} text - 要输出的文本
 * @param {string} color - 文本颜色（可选值：black, red, green, yellow, blue, magenta, cyan, white）
 * @param {string} backgroundColor - 背景颜色（可选值同上）
 * @param {string} style - 文本样式（可选值：bright, dim, italic, underline, blink, reverse, hidden）
 * @returns {string} - 返回带颜色的字符串
 */
export function colorize(text: string, color: keyof typeof colors | null, backgroundColor: keyof typeof backgroundColors | null, style: keyof typeof styles | null): string {
    // 构建 ANSI 转义序列
    let ansiCode = '';

    if (color && colors[color]) {
        ansiCode += `\x1b[${colors[color]}m`;
    }

    if (backgroundColor && backgroundColors[backgroundColor]) {
        ansiCode += `\x1b[${backgroundColors[backgroundColor]}m`;
    }

    if (style && styles[style]) {
        ansiCode += `\x1b[${styles[style]}m`;
    }

    // 重置样式
    const resetCode = '\x1b[0m';

    return `${ansiCode}${text}${resetCode}`;
}
